Various aspects of the present invention relate to testing a computer program in an event oriented manner.
Test automation frameworks usually provide tools integration, legacy tools support, ease of use, data integration, reporting features, shell script support, automatic environment setup, remote command execution, etc.
However, the definition of the test flow is deficient as it is not very flexible. This definition, regardless of whether it uses proprietary language for testing or general scripting language, is a sequence of synchronous actions, more or less complex, that an engine has to execute to complete the test case. Each action is usually represented by the invocation of a method of a class or by the execution of a Command-line Interface (CLI) command on a remote or local machine and the subsequent check of the related result code returned by that invocation. Then according to such result, the next step is executed to continue with the test case or an error is thrown to report the failure. Complex testing scenarios cannot be implemented by such testing frameworks.